﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<string>
#include<list>
using namespace std;

//class string
//{
//private:
//	char* _str;
//	size_t _size;
//	size_t _capacity;
//};

//void test_string1()
//{
//	string s1;
//	string s2("Hello wangcai!");
//	cout << s1 << s2 << endl;
//	s2[0] = 'W';
//	cout << s2 << endl;
//	cout << "1" << endl;
//
//	//第一种遍历方式 下标 + []
//	for (size_t i = 0; i < s2.size(); i++)
//	{
//		cout << s2[i] << " ";
//	}
//	cout << endl;
//	cout << "2" << endl;
//
//	//第二种遍历方式
//	//迭代器的用法：重点在于提供了一种通用的容器访问方式 可读可写
//	//所有的容器都可以用iterator访问
//	string::iterator it = s2.begin();
//	while (it != s2.end())//end是最后一个有效字符的下一个位置，也就是/0的位置
//	{
//		cout << *it << " ";
//		++it;
//	}
//	cout << endl;
//
//	//展示list的用法 所有容器都可以用这种类似的访问方式 iterator类似于指针
//	/*list<int> lt = { 1,2,3,4,5,6,7 };
//	list<int>::iterator lit = lt.begin();
//	while (lit != lt.end())
//	{
//		cout << *lit << " ";
//		++lit;
//	}
//	cout << endl;*/
//	cout << "3" << endl;
//	//第三种遍历方式
//	//范围for 适用于 容器 和 数组
//	//auto:自动推导
//	//自动赋值，自动迭代，自动判断结束
//	//底层就是迭代器
//	for (auto ch : s2)//auto自动推导成char
//	{
//		//此处ch是拷贝，若auto& 则是引用
//		cout << ch << " ";
//	}
//	cout << endl;
//}
//
////int main()
////{
////	test_string1();
////
////	return 0;
////}
//
////int main()
////{
////	int a = 10;
////	auto b = a;
////	auto c = 'a';
////
////	cout << typeid(c).name() << endl;
////
////	return 0;
////}
//
//
//void test_string2()
//{
//	string s1("Hello wangcai!");
//	//反向迭代器
//	/*string::reverse_iterator rit = s1.rbegin();
//	while (rit != s1.rend())
//	{
//		cout << *rit << " ";
//		++rit;
//	}*/
//	cout << s1.capacity() << "\n";
//}
//
//
//void test_string3()
//{
//	string s = "hello world";
//	cout << s << endl;
//	//s.erase(s.end() - 1);
//	//cout << s << endl;
//	//s.erase(s.size() - 1);
//	//cout << s << endl;
//	//s.erase();
//	//cout << s << endl;
//	//s.erase(6,1);
//	//cout << s << endl;
//	string file;
//	cin >> file;
//	FILE* fout = fopen(file.c_str(), "r");
//	char ch = fgetc(fout);
//	while (ch != EOF)
//	{
//		cout << ch;
//		ch = fgetc(fout);
//	}
//	fclose(fout);
//
//}
//
//void test_string4()
//{
//	/*string s("Test.cpp.zip");
//	int pos = s.rfind('.');
//	cout << s.substr(pos);*/
//
//	string str1("c:\\windows\\winhelp.exe");
//	cout << str1;
//}
//
//int main()
//{
//	test_string4();
//	return 0;
//}

#include"string.h"
namespace hy
{
	

	void test_string2()
	{
		string s1("hello world");
		string s2("hello world");

		cout << (s1 < s2) << endl;
		cout << (s1 == s2) << endl;
		cout << ("hello world" < s2) << endl;
		cout << (s1 == "hello world") << endl;

		cout << s1 << " " << s2 << endl;
		string s0;
		cin >> s0;
		cout << s0 << endl;
	}

	void test_string3()
	{
		string s1 = "lxbzhk";
		s1.insert(0, "hhh");
		cout << s1;
		
	}
}

int main()
{
	hy::test_string3();
	//编码 值和符号映射编码关系
	//文字---符号
	//内存和磁盘只有0101

	return 0;
}